import Vue from "vue"

import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex)
// import axios from "axios";

import counterModule from "./counter.js"
import musicModule from "./music.js"
import bmiModule from "./bmi.js"
/*
不能直接改变 store 中的状态。
改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation

Action 类似于 mutation，不同在于：
1. Action 提交的是 mutation，而不是直接变更状态。
2. Action 可以包含任意异步操作。
*/

// const addItem = "addItem"
// 全局
const store = new Vuex.Store({
	plugins: [createLogger()],
	strict: true, // vuex 严格模式
	// data
  state: {
    count: 0,
		infoList: [12, "1", "23", 34, "娃哈哈"],
		obj: {
			
		},
		// Vue.set(obj, 'age', 18)
  },
	// computed
	getters: {
		count100: (state) => {
			return state.count * 100
		},
		infoListNum: (state) => state.infoList.filter(item => typeof item === "number")
	},
	// methods
  mutations: {
		// 不要进行异步操作，不要写ajax
    INCREMENT (state) {
      state.count++
    },
		ADD_N(state, {n}) {
			// console.log(n)
			state.count += n
		},
		ADD_ITEM(state, item) {
			// state.infoList.push(Date.now())
			state.infoList.push(item)
		}
  },
	actions: {
		// 维护数据
	},
	modules: {
		co1: counterModule,
		music: musicModule,
		bmi: bmiModule
	}
})

export default store

